.版本 2
.支持库 spec

.程序集 斗鱼登录EX

.子程序 登录加密, 文本型, 公开
.参数 参_str, 文本型
.局部变量 value, 文本型
.局部变量 v8, , , , <!!!>

??? ()  ' <!!!>
value ＝ ??? ()  ' <!!!>

返回 (value)

.子程序 slide1, 逻辑型, , 注册滑块
.参数 geetest_challenge, 文本型, 参考
.参数 geetest_validate, 文本型, 参考
.参数 code_token, 文本型, 参考
.局部变量 httpR, WinHttpR
.局部变量 局_代理IP, 文本型
.局部变量 retult, 文本型
.局部变量 zyjson, zyJsonValue
.局部变量 type, 文本型

.计次循环首 (10, )
    .如果真 (工作中 ＝ 假)
        返回 (假)
    .如果真结束

    局_代理IP ＝ GetIP ()
    retult ＝ diaoyong (局_代理IP)
    ' 调试输出 (“注册滑块--> ”, retult)
    zyjson.解析 (retult)
    geetest_challenge ＝ zyjson.取文本 (“geetest_challenge”)
    geetest_validate ＝ zyjson.取文本 (“geetest_validate”)
    code_token ＝ zyjson.取文本 (“token”)
    ' type ＝ zyjson.取文本 (“type”)
    .如果真 (geetest_challenge ≠ “” 且 geetest_validate ≠ “” 且 code_token ≠ “”)
        返回 (真)
    .如果真结束

.计次循环尾 ()

返回 (假)

.子程序 slide2, 逻辑型, , 登录滑块
.参数 返回challenge, 文本型, 参考
.参数 返回validate, 文本型, 参考
.参数 返回token, 文本型, 参考
.局部变量 httpR, WinHttpR
.局部变量 局_代理IP, 文本型
.局部变量 retult, 文本型
.局部变量 zyjson, zyJsonValue
.局部变量 type, 文本型

局_代理IP ＝ GetIP ()
.计次循环首 (20, )
    .' 如果真 (工作中 ＝ 假)
        ' 返回 (假)
    .如果真结束

    retult ＝ diaoyong1 (局_代理IP)
    ' 调试输出 (“slide2->”, retult, , 局_代理IP)
    ' httpR.Open (“POST”, “http://127.0.0.1:5000/solve”)
    ' httpR.SetRequestHeaders (“User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36” ＋ #换行符 ＋ “Content-Type: application/json”)
    ' httpR.Send (“{” ＋ #引号 ＋ “gt” ＋ #引号 ＋ “:” ＋ #引号 ＋ “0484f8c2410a5a988d9e94292a34c0c4” ＋ #引号 ＋ “,” ＋ #引号 ＋ “challenge” ＋ #引号 ＋ “:” ＋ #引号 ＋ “5f9502ee96a67e7e41185d636f5d3a5e” ＋ #引号 ＋ “,” ＋ #引号 ＋ “proxy” ＋ #引号 ＋ “:” ＋ #引号 ＋ “127.0.0.1:1080” ＋ #引号 ＋ “}”)

    ' retult ＝ 编码_usc2到ansi (httpR.GetResponseTextU2A ())
    ' 调试输出 (取程序名称 (1), retult)
    ' zyjson.清空 ()
    ' zyjson.解析 (retult)
    ' 参_challenge ＝ “5f9502ee96a67e7e41185d636f5d3a5e”
    ' 参_validate ＝ zyjson.取文本 (“validate”)
    ' 参_token ＝ “cc7ac52b5e9c47f8b3c9919f7718eb5f”
    ' ' type ＝ zyjson.取文本 (“type”)
    zyjson.清空 ()
    zyjson.解析 (retult)
    返回challenge ＝ zyjson.取文本 (“geetest_challenge”)
    返回validate ＝ zyjson.取文本 (“geetest_validate”)
    返回token ＝ zyjson.取文本 (“token”)

    .如果 (返回challenge ≠ “” 且 返回validate ≠ “” 且 返回token ≠ “”)
        返回 (真)

    .否则
        局_代理IP ＝ GetIP ()
        程序_延时 (1000)
    .如果结束

.计次循环尾 ()

返回 (假)

.子程序 slide3, 逻辑型, , 绑邮箱点选
.参数 参_Cookie, 文本型
.参数 参_challenge, 文本型, 参考
.参数 参_validate, 文本型, 参考
.参数 参_seccode, 文本型, 参考
.局部变量 retult, 文本型
.局部变量 局_代理IP, 文本型
.局部变量 zyjson, zyJsonValue
.局部变量 geetest_challenge, 文本型
.局部变量 geetest_validate, 文本型
.局部变量 code_token, 文本型
.局部变量 局_type, 文本型
.局部变量 gp, 整数型

局_代理IP ＝ GetIP ()
.计次循环首 (10, )
    .如果真 (工作中 ＝ 假)
        返回 (假)
    .如果真结束

    gp ＝ diaoyong2 (参_Cookie ＋ “ Client_ip: ” ＋ 局_代理IP ＋ “ X-forwarded-for: ” ＋ 局_代理IP, “”)
    ' retult ＝ diaoyong2 (参_Cookie, 局_代理IP)
    retult ＝ 指针到文本 (gp)
    ' ‘调试输出 (“绑邮箱点选---”, retult)
    zyjson.清空 ()
    zyjson.解析 (retult)
    参_challenge ＝ zyjson.取文本 (“geetest_challenge”)
    参_validate ＝ zyjson.取文本 (“geetest_validate”)
    参_seccode ＝ zyjson.取文本 (“geetest_seccode”)
    ' 局_type ＝ zyjson.取文本 (“type”)
    ' '这里的type 要为word才能通过
    jiRel (gp)
    .如果 (参_challenge ≠ “” 且 参_validate ≠ “” 且 参_seccode ≠ “”)
        返回 (真)

    .否则
        局_代理IP ＝ GetIP ()
    .如果结束

.计次循环尾 ()
返回 (假)

.子程序 初始化CK, 文本型
.参数 参_ip, 文本型
.局部变量 httpR, WinHttpR
.局部变量 str, 文本型
.局部变量 did, 文本型

httpR.SetProxy (参_ip)
httpR.Open (“POST”, “https://passport.douyu.com/lapi/did/api/get?client_id=1&_=” ＋ 时间_取现行时间戳 () ＋ “&callback=axiosJsonpCallback1”)
httpR.SetRequestHeaders (#常量7)
httpR.SetCookie ()
httpR.Send ()
str ＝ httpR.GetResponseTextU2A ()
did ＝ 文本_取出中间文本 (str, “did” ＋ #引号 ＋ “:” ＋ #引号, #引号)
返回 (did)

.子程序 登录斗鱼, 逻辑型
.参数 参_IP, 文本型
.参数 dy用户账号, 文本型
.参数 dy密码, 文本型
.参数 geetest_challenge, 文本型
.参数 geetest_validate, 文本型
.参数 code_token, 文本型
.参数 返回Cookie, 文本型, 参考
.局部变量 httpR, WinHttpR
.局部变量 str, 文本型
.局部变量 CK, 文本型
.局部变量 zyjson, zyJsonValue
.局部变量 did, 文本型
.局部变量 局_CK, 文本型
.局部变量 err0, 整数型

.' 计次循环首 (5, )
    ' did ＝ 初始化CK (参_IP)
    .' 如果 (did ≠ “”)
        ' 跳出循环 ()

    .否则
        ' 参_IP ＝ GetIP ()
    .如果结束

.' 计次循环尾 ()
.' 如果真 (did ＝ “”)
    ' 返回 (假)
.如果真结束

did ＝ “67f9ad421edfebd03635494f00041601”
CK ＝ “dy_did=” ＋ did ＋ “; acf_did=” ＋ did ＋ “; last_login_way=phone; Hm_lpvt_e99aee90ec1b2106afe7ec3b199020a7=” ＋ 时间_取现行时间戳 (真)
' '调试输出 (“CK--------->”, CK)
httpR.SetProxy (参_IP)
.计次循环首 (5, )
    httpR.Open (“POST”, “https://passport.douyu.com/iframe/loginNew”)
    httpR.SetRequestHeaders (#常量login)
    httpR.SetCookie (CK)
    httpR.Send (“username=” ＋ 编码_URL编码_JS (dy用户账号, ) ＋ “&password=” ＋ 校验_取md5 (到字节集 (dy密码)) ＋ “&room_id=0&code_verify_data%5Bcode_type%5D=1&code_verify_data%5Bcode_token%5D=” ＋ code_token ＋ “&code_verify_data%5Bcode_data%5D%5Bgeetest_challenge%5D=” ＋ geetest_challenge ＋ “&code_verify_data%5Bcode_data%5D%5Bgeetest_validate%5D=” ＋ geetest_validate ＋ “&code_verify_data%5Bcode_data%5D%5Bgeetest_seccode%5D=” ＋ geetest_validate ＋ “%7Cjordan&code_verify_data%5Bcode_data%5D%5Bgt_version%5D=v3&redirect_url=https%3A%2F%2Fpassport.douyu.com%2Findex%2Flogin%3Fpassport_reg_callback%3DPASSPORT_REG_SUCCESS_CALLBACK%26passport_login_callback%3DPASSPORT_LOGIN_SUCCESS_CALLBACK%26passport_close_callback%3DPASSPORT_CLOSE_CALLBACK%26passport_dp_callback%3DPASSPORT_DP_CALLBACK%26type%3Dlogin%26client_id%3D1%26state%3Dhttps%253A%252F%252Fwww.douyu.com%252F%26source%3Dclick_topnavi_login&t=” ＋ 时间_取现行时间戳 () ＋ “&client_id=1&did=&lang=&isMultiAccount=0”)
    str ＝ 编码_usc2到ansi (httpR.GetResponseTextU2A ())
    局_CK ＝ httpR.GetAllResponseCookies ()
    调试输出 (“登录XXX----”, str, 局_CK)
    zyjson.清空 ()
    zyjson.解析 (str)
    err0 ＝ zyjson.取整数 (“error”)
    .如果 (str ≠ “”)
        .如果真 (err0 ＝ 130014)
            .如果真 (寻找文本 (str, “账号登录异常”, , 假) ≠ -1)
                返回Cookie ＝ “账号登录异常”
                返回 (假)
            .如果真结束
            .如果真 (局_CK ≠ “”)
                跳出循环 ()
            .如果真结束


        .如果真结束
        .如果真 (寻找文本 (str, “验证码错误”, , 假) ≠ -1)
            返回Cookie ＝ “验证码错误”
            返回 (假)
        .如果真结束
        .如果真 (寻找文本 (str, “网络错误”, , 假) ≠ -1)
            返回Cookie ＝ “网络错误”
            返回 (假)
        .如果真结束
        .如果真 (寻找文本 (str, “账号或者密码错误”, , 假) ≠ -1)
            返回Cookie ＝ “账号或者密码错误”
            返回 (假)
        .如果真结束
        .如果真 (寻找文本 (str, “账号登录异常”, , 假) ≠ -1)
            返回Cookie ＝ “账号登录异常”
            返回 (假)
        .如果真结束
        .如果真 (寻找文本 (str, “账号不存在”, , 假) ≠ -1)
            返回Cookie ＝ “账号不存在”
            返回 (假)
        .如果真结束
        .如果真 (寻找文本 (str, “邮箱密码错误”, , 假) ≠ -1)
            返回Cookie ＝ “邮箱密码错误”
            返回 (假)
        .如果真结束



    .否则
        参_IP ＝ GetIP ()
        httpR.SetProxy (参_IP)
    .如果结束

.计次循环尾 ()
.如果真 (局_CK ＝ “”)
    返回 (假)
.如果真结束

返回Cookie ＝ 网页_Cookie合并更新 (CK, 局_CK)
返回 (真)


.子程序 登录斗鱼2, 逻辑型
.参数 参_IP, 文本型
.参数 dy用户账号, 文本型
.参数 dy密码, 文本型
.参数 geetest_challenge, 文本型
.参数 geetest_validate, 文本型
.参数 code_token, 文本型
.参数 返回code, 文本型, 参考 可空
.参数 返回Cookie, 文本型, 参考
.局部变量 httpR, WinHttpR
.局部变量 str, 文本型
.局部变量 CK, 文本型
.局部变量 zyjson, zyJsonValue
.局部变量 did, 文本型
.局部变量 局_CK, 文本型
.局部变量 err0, 整数型
.局部变量 nicknameOrPhoneEncrypt, 文本型
.局部变量 password, 文本型
.局部变量 body, 文本型
.局部变量 code, 文本型

' did ＝ “6ab33184203a7d50d5f9a8fa00021701”
' CK ＝ “dy_did=” ＋ did ＋ “; acf_did=” ＋ did ＋ “; last_login_way=phone; Hm_lpvt_e99aee90ec1b2106afe7ec3b199020a7=” ＋ 时间_取现行时间戳 (真)

' '调试输出 (“CK--------->”, CK)
httpR.SetProxy (参_IP)

nicknameOrPhoneEncrypt ＝ 编码_URL编码_JS (登录加密 (dy用户账号), 1)
password ＝ 校验_取md5 (到字节集 (dy密码))

.计次循环首 (5, )
    body ＝ “type=1&nicknameOrPhoneEncrypt=” ＋ nicknameOrPhoneEncrypt ＋ “&password=” ＋ password ＋ “&room_id=0&code_type=1&code_token=” ＋ code_token ＋ “&gt_version=v3&geetest_challenge=” ＋ geetest_challenge ＋ “&geetest_validate=” ＋ geetest_validate ＋ “&geetest_seccode=” ＋ geetest_validate ＋ “%7Cjordan&code_data%5Bgeetest_challenge%5D=” ＋ geetest_challenge ＋ “&code_data%5Bgeetest_validate%5D=” ＋ geetest_validate ＋ “&code_data%5Bgeetest_seccode%5D=” ＋ geetest_validate ＋ “%7Cjordan&code_data%5Bgt_version%5D=v3&code_data%5Bcode%5D=&redirect_url=https%3A%2F%2Fpassport.douyu.com%2Findex%2Flogin%3Fpassport_reg_callback%3DPASSPORT_REG_SUCCESS_CALLBACK%26passport_login_callback%3DPASSPORT_LOGIN_SUCCESS_CALLBACK%26passport_close_callback%3DPASSPORT_CLOSE_CALLBACK%26passport_dp_callback%3DPASSPORT_DP_CALLBACK%26type%3Dlogin%26client_id%3D1%26state%3Dhttps%253A%252F%252Fwww.douyu.com%252F%253Fdyshid%253D0-6ab33184203a7d50d5f9a8fa00021701%26source%3Dclick_topnavi_login&t=” ＋ 时间_取现行时间戳 () ＋ “&client_id=1&did=&lang=&isMultiAccount=0&biz_type=1”

    httpR.Open (“POST”, “https://passport.douyu.com/wgapi/member/passport/login”)
    httpR.SetRequestHeaders (#常量login)
    httpR.SetCookie (CK)
    httpR.Send (body)



    str ＝ 编码_usc2到ansi (httpR.GetResponseTextU2A ())
    局_CK ＝ httpR.GetAllResponseCookies ()
    ' 调试输出 (“登录XXX----”, str, 局_CK)
    zyjson.清空 ()
    zyjson.解析 (str)
    err0 ＝ zyjson.取整数 (“error”)
    .如果 (str ≠ “”)
        .如果真 (err0 ＝ 130014)
            code ＝ zyjson.取文本 (“data.remoteLogin.code”)
            ' 调试输出 (“code---”, code)
            .如果真 (code ≠ “”)
                返回code ＝ code
                返回Cookie ＝ 网页_Cookie合并更新 (CK, 局_CK)
                返回 (真)
            .如果真结束

            返回Cookie ＝ “账号登录异常”
            返回 (假)
            .' 如果真 (寻找文本 (str, “账号登录异常”, , 假) ≠ -1)

                ' 返回Cookie ＝ “账号登录异常”
                ' 返回 (假)
            .如果真结束
            .' 如果真 (局_CK ≠ “”)
                ' 跳出循环 ()
            .如果真结束


        .如果真结束
        .如果真 (寻找文本 (str, “验证码错误”, , 假) ≠ -1)
            返回Cookie ＝ “验证码错误”
            返回 (假)
        .如果真结束
        .如果真 (寻找文本 (str, “网络错误”, , 假) ≠ -1)
            返回Cookie ＝ “网络错误”
            返回 (假)
        .如果真结束
        .如果真 (寻找文本 (str, “账号或者密码错误”, , 假) ≠ -1)
            返回Cookie ＝ “账号或者密码错误”
            返回 (假)
        .如果真结束
        .如果真 (寻找文本 (str, “账号登录异常”, , 假) ≠ -1)
            返回Cookie ＝ “账号登录异常”
            返回 (假)
        .如果真结束
        .如果真 (寻找文本 (str, “账号不存在”, , 假) ≠ -1)
            返回Cookie ＝ “账号不存在”
            返回 (假)
        .如果真结束
        .如果真 (寻找文本 (str, “邮箱密码错误”, , 假) ≠ -1)
            返回Cookie ＝ “邮箱密码错误”
            返回 (假)
        .如果真结束



    .否则
        参_IP ＝ GetIP ()
        httpR.SetProxy (参_IP)
    .如果结束

.计次循环尾 ()
.如果真 (局_CK ＝ “”)
    返回 (假)
.如果真结束

返回Cookie ＝ 网页_Cookie合并更新 (CK, 局_CK)
返回 (真)


.子程序 邮箱发送验证, 逻辑型
.参数 参_code, 文本型
.参数 参_CK, 文本型
.局部变量 httpR, WinHttpR
.局部变量 str, 文本型
.局部变量 zyjson, zyJsonValue
.局部变量 err0, 整数型
.局部变量 runip, 文本型

runip ＝ GetIP ()

httpR.SetProxy (runip)
.计次循环首 (3, )
    httpR.Open (“POST”, “https://passport.douyu.com/iframe/sendEmail”)
    httpR.SetRequestHeaders (#常量8)
    httpR.SetCookie (参_CK)
    httpR.Send (“cacheId=” ＋ 参_code)
    str ＝ 编码_usc2到ansi (httpR.GetResponseTextU2A ())

    ' 调试输出 (“邮箱发送验证-”, str)
    .如果 (str ≠ “”)
        zyjson.解析 (str)
        err0 ＝ zyjson.取整数 (“error”)
        .如果真 (err0 ＝ 0)
            返回 (真)
        .如果真结束
        .如果真 (err0 ＝ -1)
            返回 (假)
        .如果真结束

    .否则
        runip ＝ GetIP ()
    .如果结束

    程序_延时 (500)
.计次循环尾 ()
返回 (假)

.子程序 提交邮件码验证, 逻辑型
.参数 参_code, 文本型
.参数 参_验证码, 文本型
.参数 参_CK, 文本型
.参数 返回jumURL, 文本型, 参考
.局部变量 httpR, WinHttpR
.局部变量 str, 文本型
.局部变量 zyjson, zyJsonValue
.局部变量 局_url, 文本型
.局部变量 runip, 文本型
.局部变量 error, 文本型

runip ＝ GetIP ()
httpR.SetProxy (runip)
.计次循环首 (10, )
    httpR.Open (“POST”, “https://passport.douyu.com/iframe/remoteLogin”)
    httpR.SetRequestHeaders (#常量8)
    httpR.SetCookie (参_CK)
    httpR.Send (“veify_type=2&phoneCaptcha=” ＋ 参_验证码 ＋ “&client_id=1&isMultiAccount=0&cacheId=” ＋ 参_code)
    str ＝ httpR.GetResponseTextU2A ()
    ' 调试输出 (取程序名称 (1), str)
    zyjson.解析 (str)
    error ＝ zyjson.取文本 (“error”)
    局_url ＝ 编码_usc2到ansi (zyjson.取文本 (“data.url”))
    .如果真 (error ＝ “101”)
        返回jumURL ＝ zyjson.取文本 (“msg”)
        返回 (假)
    .如果真结束

    .如果 (局_url ≠ “”)
        返回jumURL ＝ 局_url
        返回 (真)

    .否则
        runip ＝ GetIP ()
    .如果结束
    程序_延时 (300)
.计次循环尾 ()
返回 (假)

.子程序 登录取Cookie, 逻辑型
.参数 参_IP, 文本型
.参数 参_ck, 文本型
.参数 参_url, 文本型
.参数 runCK, 文本型, 参考
.局部变量 httpR, WinHttpR
.局部变量 str, 文本型
.局部变量 局_Cookie, 文本型
.局部变量 局_代理IP, 文本型

' 调试输出 (“参_url---”, 参_url)
httpR.SetProxy (参_IP)
.计次循环首 (5, )
    httpR.Open (“GET”, “https:” ＋ 参_url ＋ “&callback=json_callback&_” ＋ 时间_取现行时间戳 () ＋ “=”)
    httpR.SetRequestHeaders (#常量9)
    httpR.SetCookie (参_ck)
    httpR.Send ()
    局_Cookie ＝ httpR.GetAllResponseCookies ()
    str ＝ 编码_usc2到ansi (httpR.GetResponseTextU2A ())
    ' 调试输出 (“登录---”, str)
    ' 调试输出 (“局_Cookie--”, 局_Cookie)
    .如果 (str ≠ “”)
        .如果 (寻找文本 (str, “登录失败”, , 假) ≠ -1 或 寻找文本 (str, “无效”, , 假) ≠ -1)
            runCK ＝ “登录失败”
            返回 (假)

        .否则
            .如果真 (局_Cookie ≠ “”)
                runCK ＝ 局_Cookie
                返回 (真)
            .如果真结束

        .如果结束

    .否则
        参_IP ＝ GetIP ()
        httpR.SetProxy (参_IP)
    .如果结束

.计次循环尾 ()
局_Cookie ＝ “取CK失败”
返回 (假)


.子程序 查询SM, 逻辑型
.参数 参_CK, 文本型
.局部变量 str, 文本型
.局部变量 zyjson, zyJsonValue
.局部变量 ident, 文本型
.局部变量 局_IP, 文本型

局_IP ＝ GetIP ()
.计次循环首 (3, )
    str ＝ 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/member/cp/cp_rpc_ajax”, , , 参_CK, , “Host: www.douyu.com” ＋ #换行符 ＋ “Connection: keep-alive” ＋ #换行符 ＋ “sec-ch-ua: ” ＋ #引号 ＋ “Google Chrome” ＋ #引号 ＋ “;v=” ＋ #引号 ＋ “119” ＋ #引号 ＋ “, ” ＋ #引号 ＋ “Chromium” ＋ #引号 ＋ “;v=” ＋ #引号 ＋ “119” ＋ #引号 ＋ “, ” ＋ #引号 ＋ “Not?A_Brand” ＋ #引号 ＋ “;v=” ＋ #引号 ＋ “24” ＋ #引号 ＋ “” ＋ #换行符 ＋ “Accept: application/json, text/javascript, */*; q=0.01” ＋ #换行符 ＋ “X-Requested-With: XMLHttpRequest” ＋ #换行符 ＋ “sec-ch-ua-mobile: ?0” ＋ #换行符 ＋ “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36” ＋ #换行符 ＋ “sec-ch-ua-platform: ” ＋ #引号 ＋ “Windows” ＋ #引号 ＋ “” ＋ #换行符 ＋ “Sec-Fetch-Site: same-origin” ＋ #换行符 ＋ “Sec-Fetch-Mode: cors” ＋ #换行符 ＋ “Sec-Fetch-Dest: empty” ＋ #换行符 ＋ “Referer: https://www.douyu.com/member/cp”, , , 真, , 局_IP))
    .如果 (str ≠ “”)
        zyjson.清空 ()
        zyjson.解析 (str)
        ident ＝ zyjson.取文本 (“info.ident”)
        .如果真 (寻找文本 (ident, “******”, , 假) ≠ -1)
            返回 (真)
        .如果真结束
        .如果真 (ident ＝ “false”)
            返回 (假)
        .如果真结束

    .否则
        局_IP ＝ GetIP ()
    .如果结束

.计次循环尾 ()
返回 (假)

.子程序 查询账号状态, 逻辑型
.参数 参_CK, 文本型
.局部变量 str, 文本型
.局部变量 zyjson, zyJsonValue
.局部变量 ident, 文本型
.局部变量 局_IP, 文本型

局_IP ＝ GetIP ()
.计次循环首 (3, )
    str ＝ 编码_Utf8到Ansi (网页_访问_对象 (“https://yuba.douyu.com/ybapi/topic/sign?timestamp=17011600”, 1, “group_id=2493219&cur_exp=0”, 参_CK, , “Host: yuba.douyu.com” ＋ #换行符 ＋ “Connection: keep-alive” ＋ #换行符 ＋ “Content-Length: 26” ＋ #换行符 ＋ “sec-ch-ua: ” ＋ #引号 ＋ “Google Chrome” ＋ #引号 ＋ “;v=” ＋ #引号 ＋ “119” ＋ #引号 ＋ “, ” ＋ #引号 ＋ “Chromium” ＋ #引号 ＋ “;v=” ＋ #引号 ＋ “119” ＋ #引号 ＋ “, ” ＋ #引号 ＋ “Not?A_Brand” ＋ #引号 ＋ “;v=” ＋ #引号 ＋ “24” ＋ #引号 ＋ “” ＋ #换行符 ＋ “Content-Type: application/x-www-form-urlencoded” ＋ #换行符 ＋ “X-CSRF-TOKEN: 2gBHQlimO9bVXG3Rj60IJ7siFA8y5Wdg” ＋ #换行符 ＋ “sec-ch-ua-mobile: ?0” ＋ #换行符 ＋ “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36” ＋ #换行符 ＋ “sec-ch-ua-platform: ” ＋ #引号 ＋ “Windows” ＋ #引号 ＋ “” ＋ #换行符 ＋ “Accept: */*” ＋ #换行符 ＋ “Origin: https://yuba.douyu.com” ＋ #换行符 ＋ “Referer: https://yuba.douyu.com/group/2493219” ＋ #换行符 ＋ “Accept-Language: zh-CN,zh;q=0.9”, , , 真, , 局_IP))
    .如果 (str ≠ “”)
        zyjson.清空 ()
        zyjson.解析 (str)
        ident ＝ zyjson.取文本 (“info.ident”)
        .如果真 (寻找文本 (ident, “******”, , 假) ≠ -1)
            返回 (真)
        .如果真结束
        .如果真 (ident ＝ “false”)
            返回 (假)
        .如果真结束

    .否则
        局_IP ＝ GetIP ()
    .如果结束

.计次循环尾 ()
返回 (假)


.子程序 _取单条Cookie, 文本型, 公开, 从左往右获取
.参数 Cookie, 文本型
.参数 名称, 文本型
.参数 不附带名称, 逻辑型, 可空
.局部变量 t, 文本型

Cookie ＝ 删首尾空 (Cookie)
.如果真 (取文本右边 (Cookie, 1) ≠ “;”)
    Cookie ＝ Cookie ＋ “; ”
.如果真结束
t ＝ 单条Cookie (Cookie, 名称)
.判断开始 (不附带名称 或 t ＝ “”)
    返回 (t)
.默认
    返回 (名称 ＋ “=” ＋ t)
.判断结束


.子程序 单条Cookie, 文本型
.参数 原Cookies, 文本型
.参数 单条Cookie名称, 文本型
.局部变量 Cookies, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 Name, 文本型

Cookies ＝ 分割文本 (原Cookies, “;”, )
.计次循环首 (取数组成员数 (Cookies), i)
    Name ＝ 文本_取左边 (删首尾空 (Cookies [i]), “=”, , )
    .如果真 (到小写 (Name) ＝ 到小写 (单条Cookie名称))
        .如果真 (寻找文本 (删首尾空 (Cookies [i]), “:”, , 假) ≠ -1)
            返回 (文本_取出中间文本 (删首尾空 (Cookies [i]), “=”, “:”, , ))
        .如果真结束
        返回 (文本_取右边 (删首尾空 (Cookies [i]), “=”, , ))

    .如果真结束

.计次循环尾 ()
返回 (“”)


